<?php 
namespace Admin\Controller; 
use Common\Model\Article;
use Common\Model\Category;
use Common\Model\ArcTag;
use Common\Model\Tag;


/**
 * 文章管理控制器
 */
class ArticleController extends CommonController{
    private $db;

    private $categoryModel;

    private $tagModel;

    private $arctagModel;
	/**
     * 构造函数
     * 
     */
	public function __init()
	{  
        //如果SESSION[id]不存在 就让它跳到iframe帧窗口的父级窗口
        if(!isset($_SESSION['id'])){
  $str=<<<str
  <script type="text/javascript">
    parent.location.href="index.php?m=admin&c=login&a=login";
  </script>
str;
      die($str);
    }
        $this->db=new Article;
        $this->categoryModel=new Category;
        $this->tagModel=new Tag;
        $this->arctagModel=new ArcTag;
		parent::__init();
	}
	
   	/**
     * 显示文章列表方法
     * 
     */
    public function index(){
        // 获取article表中的所有条目
        $all=$this->db->where('is_recycle',0)->count();
        // 框架的分页处理Page，每页显示3条
        $page=Page::row(3)->make($all);
        // 获取关联表的所有信息
        // join('category','category_cid','=','cid') 1关联的表 234关联的条件
        // field('aid','title','sendtime','cname')要查询的字段信息
        // limit(Page::limit())与Page::row(3)配套使用
        $data=$this->db->join('category','category_cid','=','cid')->field('aid','title','sendtime','cname')->orderBy('sendtime','DESC')->limit(Page::limit())->where('is_recycle',0)->get();
        // p($data);die;
        //分配到HTML页面显示数据
        View::with('data',$data);
        //分配到HTML页面显示分页
        view::with('page',$page);

       	View::make();
    }
    /**
     * 添加文章方法
     * 
     */
    public function add(){
        if (IS_POST) {
             // p($_FILES);die;
            $res=$this->db->store();
            // p($res);die;
            if (!$res) {
               View::error($this->db->getError());
            }else{
               View::success('添加文章成功','index');
            }
        }
        // 获取分类信息
        $category=$this->categoryModel->get();
        // 分配分类信息到HTML
        View::with('cateData',$category);

        // 获取标签信息
        $tag=$this->tagModel->get();
        // 分配标签信息到HTML
        View::with('tagData',$tag);
        //显示添加文章页面
        View::make();
    }
    /**
     *
     * 修改文章方法
     */
    public function edit(){
        //获取地址栏传参的$_GET['aid']
        $aid=Q('get.aid',0,'intval');
        //获取分类信息
        $category=$this->categoryModel->get();
        //分配分类信息到HTML
        View::with('cateData',$category);
        //获取标签信息
        $tag=$this->tagModel->get();
        // 分配标签信息到HTML
        View::with('tagData',$tag);
        // 获取关联表的所有信息
        $olddata=$this->db->join('article_data','aid','=','article_aid')->where('aid',$aid)->find();
        // p($olddata);die;
        // 分配显示关联表中的所有信息到HTML
        View::with('olddata',$olddata);
        // 获取点击的article_tag表中tag_tid
        // article_tag是tag表和article表的中间表
        // lists('tag_tid')获取字段tag_tid的内容
        $tags=$this->arctagModel->where('article_aid',$aid)->lists('tag_tid');
        // 分配标签到HTML页面
        View::with('tags',$tags);

        if(IS_POST){
            $res=$this->db->edit();
            if (!$res) {
               View::error($this->db->getError());
            }else{
                View::success('修改文章成功!','index');
            }
        }

        // 显示修改文章页面  
        View::make();
    }
    /**
     * 删除到回收站方法
     * 
     */
    public function torecycle(){
        // 获取地址栏传参$_GET['aid']
        $aid=Q('get.aid',0,'interval');
        // 默认is_recycle=1为删除到回收站
        $res=$this->db->where('aid',$aid)->update(array('is_recycle'=>1));
        if (!$res) {
           View::error('删除到回收站失败');
        }else{
            View::success('删除到回收站成功');
        }
    }
    /**
     *
     * 显示回收站列表
     */
    public function recycle(){
        // 获取article表中的所有条目
        $all=$this->db->where('is_recycle',1)->count();
        // 框架的分页处理Page，每页显示3条
        $page=Page::row(3)->make($all);
        // 获取关联表的所有信息
        // join('category','category_cid','=','cid') 1关联的表 234关联的条件
        // field('aid','title','sendtime','cname')要查询的字段信息
        // limit(Page::limit())与Page::row(3)配套使用
        $data=$this->db->join('category','category_cid','=','cid')->field('aid','title','sendtime')->orderBy('sendtime','DESC')->limit(Page::limit())->where('is_recycle',1)->get();
        //分配到HTML页面显示数据
        View::with('data',$data);
        //分配到HTML页面显示分页
        view::with('page',$page);

        //显示回收站的列表
        View::make();
    }
    /**
     * 回收站文章还原方法
     * 
     */
    public function restore(){
        // 获取地址栏传参$_GET['aid']
        $aid=Q('get.aid',0,'interval');
        // 默认is_recycle=1为删除到回收站
        $res=$this->db->where('aid',$aid)->update(array('is_recycle'=>0));
        if (!$res) {
           View::error('还原失败');
        }else{
            View::success('还原成功');
        }
    }
    /**
     *
     * 清空回收站数据
     */
    public function del(){
        $res=$this->db->del();
        if (!$res) {
            View::error('清空失败');
        }else{
            View::success('清空文章成功');
        }
    }



}
?>